package Pakke;

/**
 * LTimer.java
 * @author arni
 */
public class LTimer {
    private String name;
    private String alternativeName;
    private String notification;
    private long notificationTimeMs;
    private boolean active;
    private boolean checkedOut;

    /**
     * Metode for å sjekke om en timer er helt ferdig, dvs ikke lenger aktiv.     *
     * @return
     */
    public boolean isCheckedOut() {
        return checkedOut;
    }

    /**
     * Setter checkedOut
     * @param checkedOut boolean
     */
    public void setCheckedout(boolean checkedOut) {
        this.checkedOut = checkedOut;
    }

    /**
     * Konstruktør
     * @param name navn på timer
     * @param alternativeName navn på et alternativ
     * @param notification navn på en varsling
     * @param notificationTimeMs tid på en varsling
     */
    public LTimer (String name, String alternativeName, String notification, long notificationTimeMs) {
        this.name = name;
        this.alternativeName = alternativeName;
        this.notification = notification;
        this.notificationTimeMs = notificationTimeMs;
        active = true;
        checkedOut = false;
    }

    /**
     * Returnerer navnet på timer
     *
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * Returnerer navnet på et alternativ
     * @return
     */
    public String getAlternativeName() {
        return alternativeName;
    }

    /**
     * Returnerer navn på varsling
     * @return
     */
    public String getNotification() {
        return notification;
    }

    /**
     * Returnerer en long med tiden til en varsling
     * @return
     */
    public long getNotificationTimeMs() {
        return notificationTimeMs;
    }

    /**
     * Setter en tid til en varsling
     * @param notificationTimeMs
     */
    public void setNotificationTimeMs(long notificationTimeMs) {
        this.notificationTimeMs = notificationTimeMs;
    }

    /**
     * Sjekker om timeren er aktiv, dvs om den teller ned
     * @return
     */
    public boolean isActive (){
        return active;
    }

    /**
     * Setter timeren aktiv eller passiv
     * @param active
     */
    public void setActive(boolean active) {
        this.active = active;
    }

    /**
     * Returnerer tiden som gjenstår
     * @return
     */
    public int getTimeLeft() {
        int y = (int)(notificationTimeMs -System.currentTimeMillis());
        if (y < 0 ) y = 0;
        return y;
    }

    /**
     *
     * Returnerer en pent formatert streng med hvor lang tid som er igjen.
     * Format: HH:MM:SS
     * @return
     */

    public String getStringTimeLeft() {
        int y = (int)(notificationTimeMs -System.currentTimeMillis());
        if (y < 0 ) y = 0;
        String r = ""; // 6000ms = 6s
        int s = y/1000;
        int h = s/3600;
        if (h<10) r = "0";
        r = r+h+":";
        s = s%3600;
        int m = s/60;
        if(m<10) r = r+"0";
        r = r+m+":";
        s = s%60;
        if (s<10) r = r+"0";
        r =  r+s;
        return r;
    }
}
